home *** CD-ROM | disk | FTP | other *** search
/ Programming Sound Cards / Programming Sound Cards.iso / sound_87 / kbd.pas < prev    next >
Pascal/Delphi Source File  |  1995-01-01  |  6KB  |  174 lines

  1. {****************************************************************************}
  2. {                                                                            }
  3. { MODULE:         Kbd                                                        }
  4. {                                                                            }
  5. { DESCRIPTION:    Implements a fast and easy interface with the keyboard.    }
  6. {                 Uses the BIOS call for reading the keys.                   }
  7. {                                                                            }
  8. { AUTHOR:         Juan Carlos Arévalo                                        }
  9. {                                                                            }
  10. { MODIFICATIONS:  Nobody (yet ;-)                                            }
  11. {                                                                            }
  12. { HISTORY:        17-Oct-1992 Documentation                                  }
  13. {                                                                            }
  14. { (C) 1992 VangeliSTeam                                                      }
  15. {____________________________________________________________________________}
  16.  
  17. UNIT Kbd;
  18.  
  19. INTERFACE
  20.  
  21. {----------------------------------------------------------------------------}
  22. { Constants imported directly from Turbo Vision, but they work.              }
  23. {____________________________________________________________________________}
  24.  
  25. CONST
  26.  {kbXXXX Ctrl-Letter Key Codes}
  27.  
  28.   kbCtrlA    = $1E01;   kbCtrlN   = $310E;
  29.   kbCtrlB    = $3002;   kbCtrlO   = $180F;
  30.   kbCtrlC    = $2E03;   kbCtrlP   = $1910;
  31.   kbCtrlD    = $2004;   kbCtrlQ   = $1011;
  32.   kbCtrlE    = $1205;   kbCtrlR   = $1312;
  33.   kbCtrlF    = $2106;   kbCtrlS   = $1F13;
  34.   kbCtrlG    = $2207;   kbCtrlT   = $1414;
  35.   kbCtrlH    = $2308;   kbCtrlU   = $1615;
  36.   kbCtrlI    = $1709;   kbCtrlV   = $2F16;
  37.   kbCtrlJ    = $240A;   kbCtrlW   = $1117;
  38.   kbCtrlK    = $250B;   kbCtrlX   = $2D18;
  39.   kbCtrlL    = $260C;   kbCtrlY   = $1519;
  40.   kbCtrlM    = $320D;   kbCtrlZ   = $2C1A;
  41.  
  42.  {kbXXXX Alt-Letter Key Codes}
  43.  
  44.   kbAltA     = $1E00;   kbAltN    = $3100;
  45.   kbAltB     = $3000;   kbAltO    = $1800;
  46.   kbAltC     = $2E00;   kbAltP    = $1900;
  47.   kbAltD     = $2000;   kbAltQ    = $1000;
  48.   kbAltE     = $1200;   kbAltR    = $1300;
  49.   kbAltF     = $2100;   kbAltS    = $1F00;
  50.   kbAltG     = $2200;   kbAltT    = $1400;
  51.   kbAltH     = $2300;   kbAltU    = $1600;
  52.   kbAltI     = $1700;   kbAltV    = $2F00;
  53.   kbAltJ     = $2400;   kbAltW    = $1100;
  54.   kbAltK     = $2500;   kbAltX    = $2D00;
  55.   kbAltL     = $2600;   kbAltY    = $1500;
  56.   kbAltM     = $3200;   kbAltZ    = $2C00;
  57.  
  58.  {kbXXXX Special Key Codes}
  59.  
  60.   kbAltEqual = $8300;  kbEnd      = $4F00;
  61.   kbAltMinus = $8200;  kbEnter    = $1C0D;
  62.   kbAltSpace = $0200;  kbEsc      = $011B;
  63.   kbBack     = $0E08;  kbGrayMinus= $4A2D;
  64.   kbCtrlBack = $0E7F;  kbHome     = $4700;
  65.   kbCtrlDel  = $0600;  kbIns      = $5200;
  66.   kbCtrlEnd  = $7500;  kbLeft     = $4B00;
  67.   kbCtrlEnter= $1C0A;  kbNoKey    = $0000;
  68.   kbCtrlHome = $7700;  kbPgDn     = $5100;
  69.   kbCtrlIns  = $0400;  kbPgUp     = $4900;
  70.   kbCtrlLeft = $7300;  kbGrayPlus = $4E2B;
  71.   kbCtrlPgDn = $7600;  kbRight    = $4D00;
  72.   kbCtrlPgUp = $8400;  kbShiftDel = $0700;
  73.   kbCtrlPrtSc= $7200;  kbShiftIns = $0500;
  74.   kbCtrlRight= $7400;  kbShiftTab = $0F00;
  75.   kbDel      = $5300;  kbTab      = $0F09;
  76.   kbDown     = $5000;  kbUp       = $4800;
  77.  
  78.  {kbXXXX Alt-Number Key Codes}
  79.  
  80.   kbAlt1     = $7800;   kbAlt6    = $7D00;
  81.   kbAlt2     = $7900;   kbAlt7    = $7E00;
  82.   kbAlt3     = $7A00;   kbAlt8    = $7F00;
  83.   kbAlt4     = $7B00;   kbAlt9    = $8000;
  84.   kbAlt5     = $7C00;   kbAlt0    = $8100;
  85.  
  86.  {kbXXXX Function Key Codes}
  87.  
  88.   kbF1       = $3B00;   kbF6      = $4000;
  89.   kbF2       = $3C00;   kbF7      = $4100;
  90.   kbF3       = $3D00;   kbF8      = $4200;
  91.   kbF4       = $3E00;   kbF9      = $4300;
  92.   kbF5       = $3F00;   kbF10     = $4400;
  93.  
  94.  {kbXXXX Shift-Function Key Codes}
  95.  
  96.   kbShiftF1  = $5400;   kbShiftF6 = $5900;
  97.   kbShiftF2  = $5500;   kbShiftF7 = $5A00;
  98.   kbShiftF3  = $5600;   kbShiftF8 = $5B00;
  99.   kbShiftF4  = $5700;   kbShiftF9 = $5C00;
  100.   kbShiftF5  = $5800;   kbShiftF10= $5D00;
  101.  
  102.  {kbXXXX Ctrl-Function Key Codes}
  103.  
  104.   kbCtrlF1   = $5E00;   kbCtrlF6  = $6300;
  105.   kbCtrlF2   = $5F00;   kbCtrlF7  = $6400;
  106.   kbCtrlF3   = $6000;   kbCtrlF8  = $6500;
  107.   kbCtrlF4   = $6100;   kbCtrlF9  = $6600;
  108.   kbCtrlF5   = $6200;   kbCtrlF10 = $6700;
  109.  
  110.  {kbXXXX Alt-Function Key Codes}
  111.  
  112.   kbAltF1    = $6800;   kbAltF6   = $6D00;
  113.   kbAltF2    = $6900;   kbAltF7   = $6E00;
  114.   kbAltF3    = $6A00;   kbAltF8   = $6F00;
  115.   kbAltF4    = $6B00;   kbAltF9   = $7000;
  116.   kbAltF5    = $6C00;   kbAltF10  = $7100;
  117.  
  118.  
  119.  
  120.  
  121. FUNCTION  KbdKeyPressed : BOOLEAN; { TRUE if there is a key waiting.                }
  122. FUNCTION  KbdReadKey    : WORD;    { Waits for a key and returns ASCII in the lower }
  123.                                    { byte and scan code in the higher byte.         }
  124. PROCEDURE KbdFlush;                { Flushes the keyboard buffer.                   }
  125.  
  126.  
  127.  
  128.  
  129. IMPLEMENTATION
  130.  
  131. USES OutPut43;
  132.  
  133. VAR
  134.   KbHead : WORD ABSOLUTE 0:$41A; 
  135.   KbTail : WORD ABSOLUTE 0:$41C; { Keyboard buffer indexes in the ROM BIOS data area. }
  136.  
  137.  
  138.  
  139.  
  140. {----------------------------------------------------------------------------}
  141. { Exported routines.                                                         }
  142. {____________________________________________________________________________}
  143.  
  144.  
  145. FUNCTION KbdKeyPressed : BOOLEAN; ASSEMBLER;
  146.   ASM
  147.         XOR     AX,AX
  148.         MOV     ES,AX
  149.         MOV     AX,[ES:KbHead]
  150.         SUB     AX,[ES:KbTail]
  151.         JZ      @@1
  152.          MOV    AX,1
  153. @@1:
  154.         STI
  155.   END;
  156.  
  157.  
  158. FUNCTION KbdReadKey : WORD; ASSEMBLER;
  159.   ASM
  160.         XOR     AX,AX
  161.         INT     $16
  162.   END;
  163.  
  164.  
  165. PROCEDURE KbdFlush;
  166.   BEGIN
  167.     KbHead := KbTail;
  168.   END;
  169.  
  170.  
  171.  
  172.  
  173. END.
  174.